package net.csdn.business.common.domain.request.pop;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotEmpty;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 创建资讯DTO
 */
@Data
public class CreateInformationDTO {
    /**
     * 文章id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long informationId;

    /**
     * 社区id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long communityId;

    /**
     * 资讯文章标题 最大支持500字
     */
    @Length(max = 600, message = "资讯文章标题最大支持500字")
    private String informationTitle;

    /**
     * 资讯文章描述，最大支持1500字
     */
    @Length(max = 100000, message = "资讯文章描述最大支持100000字")
    private String informationMsg;

    /**
     * 标签id集合
     */
    private List<String> labelIdList;

    /**
     * 文本类型：0 富文本  1 markdown
     */
    private Integer textType;

    /**
     * 封面url
     */
    private String coverUrl;

    /**
     * 资讯文章内容，最大支持5000字
     */
//    @Length(max = 5000, message = "资讯文章内容最大支持5000字")
    private String informationContent;

    /**
     * 资讯类型：1精选 2非精选
     */
    private Integer informationType;

    /**
     * 资讯状态：1-已发布 2-草稿  3-已下线  4-审核中 5-未通过
     */
    private Integer informationState;

    /**
     * 文本审核状态：1通过  2拒绝
     */
    private Integer auditState;

    /**
     * 开启评论：1开启  2关闭
     */
    private Integer openComments;

    /**
     * 允许转载：1允许  2拒绝
     */
    private Integer allowReprinting;

    /**
     * 创建Id
     */
    private String createId;

    /**
     * 创建人昵称
     */
    private String createNickName;

    /**
     * 创建人
     */
    private String createName;

    /**
     * 资讯关键词，最大支持500字
     */
    @Length(max = 500, message = "资讯关键词 最大支持500字")
    private String informationKeywords;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime publishTime;

    private String communityCode;

}
